#include <iostream>
#include <cstdlib>
#include <cstdio>
#include <cstring>
#include <sys/types.h>
#include <dirent.h>
#include <vector>

#define APERTURA_EXITOSA 0
#define ERROR_APERTURA 1

using std::vector;
using std::string;

/**
 * Esta clase se encarga de levantar el contenido de un directorio a memoria.
 */
namespace TP { namespace IO {
class ExploradorDirectorios {
public:
    // Constructor
    ExploradorDirectorios();
    
    // Destructor
    virtual ~ExploradorDirectorios();
    
    /**
     * Carga en memoria los directorios y archivos que se encuentran en el
     * path pasado.
     * @param path Ruta del directorio a cargar.
     * @return Si la operación es exitosa retorna 0, de lo contrario retorna 1. 
     */
    int cargarDirectorios(const string &path);
    
    // Retorna un vector con los directorios cargados.
    const vector<string>& getDirectorios();
    
private:
    vector<string> _directorios;
    
};

}}